/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package RRHH_controlador;

import Conexion.Conexion;
import RRHH_Modelo.RHH_DATOS;
import RRHH_Modelo.RHH_PERSONA;
import RRHH_Modelo.RHH_PERSONA_DATOS;
import RRHH_Modelo.RHH_USUARIO;
import it.sauronsoftware.ftp4j.FTPAbortedException;
import it.sauronsoftware.ftp4j.FTPClient;
import it.sauronsoftware.ftp4j.FTPDataTransferException;
import it.sauronsoftware.ftp4j.FTPException;
import it.sauronsoftware.ftp4j.FTPIllegalReplyException;
import java.io.IOException;
import java.io.InputStream;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;

/**
 *
 * @author equipo_4
 */
@MultipartConfig
@WebServlet(name = "RRHH_DOCUMENTOS_EXPIRADOS_CONTROLLER", urlPatterns = {"/RRHH_DOCUMENTOS_EXPIRADOS_CONTROLLER"})
public class RRHH_DOCUMENTOS_EXPIRADOS_CONTROLLER extends HttpServlet {

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException, SQLException, ParseException, IllegalStateException, FTPIllegalReplyException, FTPException, FTPDataTransferException, FTPAbortedException {
        
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        RHH_USUARIO usuarioa = ((RHH_USUARIO) request.getSession().getAttribute("usr"));
        Conexion con = new Conexion(usuarioa.getUSUARIO(), usuarioa.getPASSWORD());
        con.Transacction();
        String proceso = request.getParameter("proceso");
        String html = "";
        try {
            
            switch (proceso) {
                case "guardar":
                    html=guardar(con, request);
                    break;
                case "buscarEmpleado":
                    html=buscarEmpleado(request, con);
                    break;
                case "documentoscaducados":
                    html=documentoscaducados(request, con);
                    break;
            }
            con.commit();
            
        } catch (Exception ex) {
            con.rollback();
        }
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/plain");
        response.getWriter().write(html);
    }
    private String documentoscaducados(HttpServletRequest request, Conexion con) throws SQLException {
        int idpersona=Integer.parseInt(request.getParameter("idpersona"));
        List<RHH_PERSONA_DATOS> pd=new RHH_PERSONA_DATOS(con).BuscarXidPersonaCaducados(idpersona);
        String html="";
        RHH_PERSONA persona=new RHH_PERSONA(con).BuscarxID(idpersona);
        for (int i = 0; i < pd.size(); i++) {
            RHH_DATOS dato=new RHH_DATOS(con).BuscarXid(pd.get(i).getID_DATOS());
            html+="<tr>";
            html+="<td>"+dato.getDESCRIPCION()+"</td>";
            html+="<td>"+pd.get(i).getCADUCIDAD()+"</td>";
            html+="<td>"+pd.get(i).getDATO()+"</td>";//id,nombre,titulo,fecha
            html+="<td><button onclick=\"actualizar("+pd.get(i).getID_DATOS()+",'"+pd.get(i).getDATO()+"','"+dato.getDESCRIPCION()+"','"+pd.get(i).getCADUCIDAD()+"',"+persona.getCI()+")\">ACTUALIZAR</button></td>";
            html+="</tr>"; 
        }
        return html;
    }
    private String buscarEmpleado(HttpServletRequest request, Conexion con) throws SQLException {
        String text = request.getParameter("text");
        RHH_PERSONA persona = new RHH_PERSONA(con);
        RHH_USUARIO usuario = new RHH_USUARIO(con);
        List<RHH_USUARIO> lista=usuario.BuscarDocumentoVencido(text);
        String html="";
        for (int i = 0; i < lista.size(); i++){
            persona = persona.BuscarxID_Usuario(lista.get(i).getID());
            String src = "../img/imagen3.jpg";
            String nombre = persona.getPRIMER_NOMBRE() + " ";
            if (persona.getSEGUNDO_NOMBRE() != null || !persona.getSEGUNDO_NOMBRE().equals("null")) {
                nombre += persona.getSEGUNDO_NOMBRE() + " ";
            }
            nombre += persona.getPRIMER_APELLIDO();
            if (persona.getSEGUNDO_APELLIDO() != null || !persona.getSEGUNDO_APELLIDO().equals("null")) {
                nombre += " " + persona.getSEGUNDO_APELLIDO() + " ";
            }
           
            html += "<div  onclick=\"abrirpop(this,'" + persona.getID() + "','" + nombre + "',0)\" style=\"padding: 5px; width: 106px; background: none repeat scroll 0% 0% white; border-radius: 7px; height: 135px; margin: 5px; float:left;\">\n"
                    + "<div class=\"centrado negrilla\" class='ci'>" + persona.getCI() + "</div>\n"
                    + "<div style=\"height: 80px; width: 104px;\">\n"
                    + "<img style=\"width: 100%; height: 100%;\" data-ci='" + persona.getCI()+ "' data-foto='"+persona.getFOTO()+"' alt=\"\" class='imagen' src=\"" + src + "\">\n"
                    + "</div>\n"
                    + "<div class=\"centrado\">" + nombre + "</div>\n"
                    + "                   </div>";
        }
        return html;
    }
    private String guardar(Conexion con, HttpServletRequest request) throws Exception{
        try {
            int idpersona=Integer.parseInt(request.getParameter("persona"));
            int dato=Integer.parseInt(request.getParameter("dato"));
            String ci=request.getParameter("ci");
            RHH_PERSONA_DATOS pd=new RHH_PERSONA_DATOS(con).BuscarXid(idpersona, dato);
            String fecha=request.getParameter("caducidad");
            SimpleDateFormat df=new SimpleDateFormat("dd/mm/YYYY");
            pd.setCADUCIDAD(df.parse(fecha));
            Part doc = request.getPart("file");
            String nom = doc.getSubmittedFileName();
            InputStream in = doc.getInputStream();
            if(nom.length()>0)
            {
                pd.setDATO(doc.getSubmittedFileName());
            }
            pd.Actualizar();
            in = doc.getInputStream();
            subirftp(in, ci, doc.getSubmittedFileName(), doc.getSize(), "");

        } finally {            
        }
            return "";
    }
    private void subirftp(InputStream in, String ci, String nombre, long size,String old) throws Exception
    {
        if(in!=null && !nombre.equals(""))
        {
            FTPClient client = new FTPClient();          
            client.connect("192.168.0.101");
            client.login("postulado","oracle123");

            try{
                client.createDirectory(ci);
                client.changeDirectory(ci);
            }
            catch(Exception e)
            {
                client.changeDirectory(ci);
            }
            try{
                client.deleteFile(old);
            }catch(Exception e){}                
            client.upload(nombre, in, size, 0, null);

            client.disconnect(false);
        }       
    }
    
    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
